Trace View

Trace View (Views > Trace View, Vertical / Trace View, Horizontal) is the primary Tracealyzer view. It displays all recorded information on a vertical (Trace View, Vertical) or horizontal (Trace View, Horizontal) time line.

Sections in this topic:

 


Overview

The colored bars show scheduling, with fragments of actors displayed as color-coded rectangles.

By actor we mean an execution context - a task or ISR. Each actor has a unique color, based on its scheduling priority. The default color scheme is the natural light spectrum, going from red (high priority) to blue (low priority), and finally light gray for the idle task. The exact colors used depends on the number of actors in the trace and their relative priorities.

To Change the Trace View Color Scheme:

You can change the Trace View color scheme through the View menu.

  1. Navigate to View > Trace View Settings > Set Color Scheme.
  2. Choose one of the following:

At the left side of this view are labels showing actor names. During a zoom out, the name labels are filtered so that only the most important labels are shown. Repeated labels of the same actor are then hidden and replaced by labels for less frequent actors. However, there is always at least one label per visible actor. You can click in the trace to display the corresponding actor name label.

View Options

The View menu in Trace View contains several options that allow you to change the Trace View display as well as its content.

Menu Option Description
Clone View

Creates a duplicate copy of the Trace View in the same window.

Vertical View

Switches the Trace View to a vertical display.

Horizontal View

Switches the Trace View to a horizontal display.

View Presets

Controls visualization of thread and interrupt execution. See View Presets below for more information.

Display Size

Controls the display size of elements in the Trace View.

Display Mode

Controls the display mode of the Trace View. There are three available options:

  • Gantt – One column for each channel.
  • Compact – As few columns as possible.
  • Merged – Indents based on preemption.
Show Actor Names

Toggles display of Actor Names.

Show Events

Toggles display of events. See Events below for more information.

Collapse Headers

Toggles display of view headers.

Add Field

Opens the Add Field dialog, through which you can add additional fields to the Trace View. See Fields below for more information.

Setup Field

Opens the Trace View Setup dialog. See Fields below for more information.

View Presets

The execution of threads and interrupts can be visualized using view presets, which you can quickly toggle between to optimize the display depending on the situation. Each preset will set up the fields needed to show the type of information required. The available view presets are:

Preset Description
Gantt Preset Shows one column per task and interrupt. This is best for spotting execution patterns, rare tasks or interrupts. (Default shortcut key "G")
Merged Preset Shows all tasks and interrupts in a single column, with sideways indents to show preemption and blocking. This gives a more compact display compared to Gantt View Mode and the best sense of execution order and preemption hot-spots. (Default shortcut key "M")
Split Preset Shows tasks and interrupts in two columns, with indents like in the Merged View Mode. This removes the "noise" from interrupts by presenting them separately. (Default shortcut key "S")
Flat Preset Shows all tasks and interrupts in one single column (per core). (Default shortcut key "F")
Intervals Preset

Only show intervals. See Intervals for more information.

NOTE: This preset is only available when there are intervals active.

Events

The Trace View also shows event labels for kernel notices, kernel service calls and user events. Use the visibility filter in the lower right of the window to control display of these labels. The events are shown as color-coded labels to the right of the fragment in which they occur.

NOTE: Delay calls are shown in white, not red, even though they block the executing thread. This is done because delays are unconditional blocking, and the sole purpose of these service calls.

NOTE: The red, green and orange labels are used only for blocking on shared resources, e.g., semaphores and mutexes, where the blocking may not be intentional and thus of greater interest to study.

When selecting a blocking call (red label) or a resume from blocking (green label), the matching event (call or return) event is also highlighted. You may jump to that event by using the button in Selection Details pressing F8, or by using the context menu option Find Entry/Exit of Blocking Service Call.

Double-clicking on an actor opens the Instance Details view, which provides information focused around that actor. Double-clicking on a system call opens a focused view showing a list of all related events, e.g., the Object History View. This shows all service calls on a selected object, i.e., a message queue, semaphore or mutex. Double-clicking on a user event shows the Event Log, with filters applied.

Clicking on a task or ISR fragment selects the corresponding actor instance and highlights it. You can follow the execution of the selected actor using the Previous and Next buttons in Selection Details. Clicking an event label selects and highlights both the actor instance and the event. When an actor instance is selected, the Actor Information display is updated. This is a tree structure containing a lot of information, both general statistics of the actor and information about the specific instance. Most tree nodes that refer to a particular point in the trace are links to that location. By double-clicking them you can navigate the trace view to that position. The linked tree nodes include all Lowest and Highest, Triggered By, and Triggers, as well as the list of events in the end.

NOTE: When there are too many events in the current view to fit on the screen, they'll be hidden and replaced by the text X events not shown. If this happens, zoom in or use the visibility filter to reduce the number of events. If the number of events for a selected actor is not too many, they will be shown even if the rest of the events are hidden.

Fields

Each section in the Trace View is called a field, and each field has a header showing its name, and the different fields are divided by lines. Most fields have configuration available, which can be accessed by right-clicking or clicking on the configuration icon. To see the Actor Names field, click View > Show Actor Names. There is also a quick option to show or hide all event fields: View > Show Events.

To add a new field:

  1. In Trace View, click View > Add Field.
  2. The Add Field dialog appears. Choose one of the available field types, and then click OK.

To configure an existing field:

  1. In Trace View, click View > Add Field.
  2. The Trace View Setup dialog appears.

Through this dialog, you can:

Advanced Features

Tracealyzer can identify activation causes for actor instances. For example, an instance might be activated when another actor signals a semaphore. To go to the activation cause of the selected actor instance, press F9.

Tracealyzer can also identify instances triggered by the selected instance, either from the Actor Information display (Triggers) or via the F10 key. When you press F10 and there are multiple instances activated by the selected instance, a menu appears, through which you can select which activated actor you wish to follow.

For service calls, press the F11 key to go to the sending or receiving event. When you press F11 on a semaphore, a RtWaitForSingleObjectEx Returned or RtWaitForMultipleObjectsEx Returned event would take you to the corresponding RtReleaseSemaphore event.

For blocking service call events, press the F12 key to show the reason for the triggering/released blocking, if this is due to a system call. This is also available in the Actor Information display (Triggered By). This will in many cases produce the same result as using F11, but not always.

 

Related Topics ABOUT TRACEALYZER:

rELATED tOPICS ABOUT MONITORING: